import { defHttp } from '/@/utils/http/axios';
import {
  IUpdatePrdFolder,
  IAddPrdFolder,
  IAddPrdFile,
  IUpdateBindingObjectList,
  IBorrowBdDataAddFile,
  IGetBorrowTableList,
  IGetFlowInstance,
  ICreatePicText,
} from './model/documentModel';

enum Api {
  UpdatePrdFolder = '/services/app/Prdfolder/UpdatePrdfolder',
  AddPrdFolder = '/services/app/Prdfolder/AddPrdfolder',
  // 添加目录关联文件
  AddPrdFile = '/services/app/Prdfolder/AddFolderAssociation',
  // 获取用户历史借阅审批流程数据
  GetBorrowBdData = '/services/app/WorkflowInstances/SelectBrowserHistroyWorkflow',
  // 获取对应文件相关流程实例
  GetFlowInstance = '/services/app/WorkflowInstances/SelectFileAboutWorkflow',
  // 导入文件类型
  ImportFileType = '/services/app/Pdmdoctype/GetALLFilePdmDocType',
  // 新建图文档
  CreatePicText = '/services/app/Task/AddFolderFile',
  // 图档类型
  GetFileType = '/services/app/Pdmdoctype/GetALLFilePdmDocTypeAndBd',
}
/**
 * 模块名:带用户权限的获取目录层级接口
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/01 14:43:53
 */
export const getDirectoryLevel = (superid?: number) =>
  defHttp.get({ url: `/services/app/Prdfolder/GetTestHavePower?superid=${superid}` });

/**
 * 模块名:新增目录数据
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/02 14:29:47
 */
export const addPrdFolder = (params: IAddPrdFolder) =>
  defHttp.post({ url: Api.AddPrdFolder, params });

/**
 * 模块名:修改目录数据
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/01 14:46:24
 */
export const updatePrdFolder = (params: IUpdatePrdFolder) =>
  defHttp.put({ url: Api.UpdatePrdFolder, params });

/**
 * 模块名:删除对应目录
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/01 14:59:04
 */
export const deletePrdFolder = (FolderId: string) =>
  defHttp.delete({ url: `/services/app/Prdfolder/DeletePrdfolder?FolderId=${FolderId}` });

/**
 * 模块名:查看对应目录
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/04 09:47:40
 */
export const getPrdFolder = (FolderId: string) =>
  defHttp.get({ url: `/services/app/Prdfolder/GetOnePrdfolder?FolderId=${FolderId}` });

/**
 * 模块名:目录右键菜单里面加个添加图书馆索引
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/01 15:08:12
 */
export const addLibraryIndex = (PrdFolderId: number) =>
  defHttp.post({ url: `/services/app/Prdfolder/AddLibraryUsePrdId?PrdFolderId=${PrdFolderId}` });

/**
 * 模块名:检入
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/02 16:45:46
 */
export const checkIn = (OId: string) =>
  defHttp.post({ url: `/services/app/WorkflowInstances/JustCheckIn?OId=${OId}` });

/**
 * 模块名:检出
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/02 16:46:35
 */
export const checkOut = (OId: string) =>
  defHttp.post({ url: `/services/app/WorkflowInstances/JustCheckOut?OId=${OId}` });

/**
 * 模块名:撤销文件
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/02 16:47:36
 */
export const cancelFile = (OId: string) =>
  defHttp.post({ url: `/services/app/Prdfolder/RevokeFile?OId=${OId}` });

/**
 * 模块名:删除文件
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/02 16:48:39
 */
export const deleteFile = (OId: string) =>
  defHttp.delete({ url: `/services/app/Prdfolder/DeleteAllVersionFile?OId=${OId}` });

/**
 * 模块名:添加文件和图书馆索引数据
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/04 09:49:45
 */
export const addFileAndLibraryIndex = (params: IAddPrdFile) =>
  defHttp.post({ url: `/services/app/LibraryFile/AddLibraryFile`, data: params });

/**
 * 模块名:点击目录获取单文件列表
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/04 15:56:24
 */
export const getPrdFileList = (superid: string) =>
  defHttp.get({ url: `/services/app/Prdfolder/GetPrdFileData?superid=${superid}` });

/**
 * 模块名:获取文件版本展示数据
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/02/05 11:22:34
 */
export const getPrdFileVersionList = (OId: string) =>
  defHttp.get({ url: `/services/app/Prdfolder/GetOneFileAllVersion?OId=${OId}` });

// 图文档下载
export const downloadFile = (OId: string, Version: string, fileName: string) =>
  defHttp.export(
    {
      url: `/DownloadFileHaveVersion`,
      data: { OId, Version },
    },
    fileName,
  );

// 获取对应文件详情信息
export const getPrdFileDetail = (OId: string) =>
  defHttp.get({ url: `/services/app/Prdfolder/GetOneFileDetails?OId=${OId}` });

// 查借阅表单目录
export const getBorrowTableList = (foldername: string) =>
  defHttp.get({ url: `/services/app/Prdfolder/GetTestUseName?foldername=${foldername}` });

// 获取对应目录绑定对象数据
export const getBindingObjectList = (Folderid: string) =>
  defHttp.get({ url: `/services/app/Prdfolder/GetFolderDocTypeList?Folderid=${Folderid}` });

// 修改对应目录与绑定文件类型列表数据
export const updateBindingObjectList = (params: IUpdateBindingObjectList) =>
  defHttp.post({ url: `/services/app/Prdfolder/ChangeFolderDocList`, data: params });

// 添加目录关联文件
export const addFolderBindingObject = (params: IBorrowBdDataAddFile) =>
  defHttp.post({ url: Api.AddPrdFile, data: params });

// 获取用户历史借阅审批流程数据
export const getHistoryBorrowApprovalList = (params: IGetBorrowTableList) =>
  defHttp.post({ url: Api.GetBorrowBdData, data: params });

/**
 * 模块名:获取对应文件相关流程实例
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/03/01 10:19:53
 */
export const getBorrowFlowInstance = (params: IGetFlowInstance) =>
  defHttp.post({ url: Api.GetFlowInstance, data: params });

/**
 * 模块名:导入文件,可多文件上传
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/03/04 09:40:40
 */
export const importFile = (DocType: string, DhType: string, FolderId: string, files: any) =>
  defHttp.uploadFile(
    {
      url: `/api/services/app/Task/UploadFolderFile?DocType=${DocType}&DhType=${DhType}&FolderId=${FolderId}`,
    },
    files,
  );

/**
 * 模块名:导入文件类型
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/03/04 10:48:48
 */
export const importFileType = () => defHttp.get({ url: Api.ImportFileType });

// 下载目录列表导出
export const downloadFolderList = (FolderId: string | number) =>
  defHttp.export({ url: `/DownloadTaskReportExcel`, data: FolderId }, '内容列表导出.xlsx');

/**
 * 模块名:相关图档列表
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/03/06 08:43:50
 */
export const getRelatedFileList = (OId: string) =>
  defHttp.get({ url: `/services/app/Prdfolder/GetOneFileAboutList?OId=${OId}` });

/**
 * 模块名:获取工作指派列表数据
 * 代码描述: OId为所选目录或文件idType 0为文件类型，1为目录类型
 * 作者:张泽源
 * 创建时间:2024/03/06 16:15:29
 */
export const getWorkAssignList = (OId: string, Type: string) =>
  defHttp.get({ url: `/services/app/Prdfolder/GetWorkHandOver?OId=${OId}&Type=${Type}` });

/**
 * 模块名:目录或单文件工作指派
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/03/06 16:21:31
 */
export const workAssign = (userid: string, fileList: any) =>
  defHttp.post({ url: `/services/app/Prdfolder/WorkHandOver`, data: { userid, fileList } });

/**
 * 模块名:查询所有图档类型数据(带类型分类图文档和表单)
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/03/07 16:45:13
 */
export const getAllFileType = (FolderId: number) =>
  defHttp.get({ url: Api.GetFileType, params: { FolderId } });

/**
 * 模块名:获取对应文件类型的基础详情数据
 * 代码描述:判断是文件类型的新建图档界面前调用
 * 作者:张泽源
 * 创建时间:2024/03/08 08:43:42
 */
export const getBaseDetail = (FileType: string | number) =>
  defHttp.get({ url: `/services/app/Task/GetFileThitObjectId?FileType=${FileType}` });

/**
 * 模块名:新建图文档（只能上传单个文件,可添加关联文件操作)
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/03/08 08:45:20
 */
export const createPictureDoc = (formData: any) =>
  defHttp.request({
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    method: 'POST',
    url: Api.CreatePicText,
    params: formData,
  });

/**
 * 模块名:浏览文件(根据oid和版本提取pdm存的对应文件,落地到服务器对应文件夹)
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/03/11 10:59:03
 */
export const browseFile = (OId: string, Version: number) =>
  defHttp.get({ url: `/services/app/Task/GetExtractFileUrl?OId=${OId}&Version=${Version}` });

/**
 * 模块名:获取对应图文档使用情况(零件和图档)列表
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/04/23 16:28:38
 */
export const GetDocTypeUseList = (params: any) =>
  defHttp.get({
    url: `/services/app/PartRevision/GetDocTypeUseList`,
    params,
  });

/**
 * 模块名: 获取对应文件类型和流程类型模板Dto列表
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/04/30 08:57:09
 */
export const getFileTypeAndFlowTypeTemplateList = (FileType: string, WorkflowType: string) =>
  defHttp.get({
    url: `/services/app/Workflows/GetWorkflowsListUseTypeRetDto?FileType=${FileType}&WorkflowType=${WorkflowType}`,
  });

/**
 * 模块名:新建图文档，为表单类型的动态数据
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/07/12 17:11:36
 */
export const GetBdInfoBeforeAdd = (FileType: string) =>
  defHttp.get({
    url: `/services/app/ClassProps/GetBdInfoBeforeAdd?FileType=${FileType}`,
  });

/**
 * 模块名:新建图档，类型为表单
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/07/31 09:03:39
 */
export const AddDocForm = (folderId: string, fileType: string, formData: any) =>
  defHttp.post({
    url: `/services/app/ClassProps/AddDocForm?folderId=${folderId}&fileType=${fileType}`,
    data: formData,
  });

/**
 * 模块名:
 * 代码描述: 查看表单实例
 * 作者:张泽源
 * 创建时间:2024/07/31 14:03:16
 */
export const OpenDocForm = (oid: string, typeName: string, version: string) =>
  defHttp.post({
    url: `/services/app/ClassProps/OpenDocForm?oid=${oid}&typeName=${typeName}&version=${version}`,
  });

/**
 * 模块名:修改表单实例
 * 代码描述:
 * 作者:张泽源
 * 创建时间:2024/07/31 15:43:24
 */
export const EditDocForm = (typeName: string, formData: any) =>
  defHttp.post({
    url: `/services/app/ClassProps/EditDocForm?typeName=${typeName}`,
    data: formData,
  });
